﻿using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace SlideRight
{
    class Untertitel
    {
        /// <summary>
        /// Statische Liste der Untertitel. 
        /// [0] => Untertitel [1] => Quelle
        /// </summary>
        public static Dictionary<string, string[]> Liste;
        public static string Pfad;

        /// <summary>
        /// Initialisiert die Untertitel.
        /// </summary>
        public static void Init()
        {
            // Die liste zurücksetzen (Falls die Liste Aktualliesiert werden soll oder schon Initialisiert war)
            Liste = new Dictionary<string, string[]>();

            try // Try block, damit kein Fehler ausgegeben wird sollte die Untertitel Datei noch nicht vorhanden sein.
            {
                // Neuen Streamreader um die Datei auszulesen. Wirft auch sofort Exeption wenn die Dateinciht vorhanden ist.
                StreamReader Leser = new StreamReader(Pfad);
                // Temporärere String Array zum Zwichen speichern der Zeilen.
                string[] Temp;

                while (!Leser.EndOfStream)
                {
                    // Die Datei Zeile Auslesen und Direkt Splitten und Temporär Speichern.
                    Temp = Leser.ReadLine().Split('|');
                    // Untertitel der Liste hinzufpgen, erst den Namen der datei zur identifikation und dann als Array Untertitel + Quelle
                    Liste.Add(Temp[0], new String[] { Temp[1], Temp[2] });
                }
                // Leser wieder schließen um die Datei freizugeben.
                Leser.Close();
            }
            catch { }
        }

        public static bool Set(string Name, string[] Wert)
        {
            // Bool die zurück gibt ob der Untertitel Geändert worden ist oder nicht.
            bool Geändert = false;

            // Streams zum Lesen und Schreiben der Untertitel Datei
            StreamReader Leser;
            StreamWriter Schreiber;

            // Strings zum zwichen Speichern der Zeilen, der Untertitel und der Ganzen Datei
            string datei = "";
            string zeile;
            string[] temp;

            // Bool ob der Untertitel 
            bool gefunden = false;

            // Überprüfen ob die Dateiexistiert
            if (File.Exists(Pfad))
            {
                // Leser erstellen
                Leser = new StreamReader(Pfad);

                while (!Leser.EndOfStream)
                {
                    // Zeile Lesen und Splitten
                    zeile = Leser.ReadLine();
                    temp = zeile.Split('|');

                    // Überprüfe ob die Zeile den Untertitel enthält der geändert werden soll.
                    if (temp[0].Equals(Name))
                    {
                        gefunden = true;
                        temp[1] = Wert[0];
                        temp[2] = Wert[1];
                    }

                    // Die Zeile wieder Setzen
                    zeile = String.Format("{0}|{1}|{2} \r\n",temp[0], temp[1], temp[2]);
                    datei += zeile;
                }
                Leser.Close();

                // Sollte gefunden werden die neue datei schreiben sonst den neuen Untertitel setzen.
                if (gefunden)
                {
                    Schreiber = new StreamWriter(Pfad);
                    Schreiber.Write(datei);
                }
                else
                {
                    Schreiber = new StreamWriter(Pfad, true);
                    Schreiber.Write(String.Format("{0}|{1}|{2} \r\n", Name, Wert[0], Wert[1]));
                }
                Geändert = true;
                // Schreiber wieder schließen um die datei freizugeben.
                Schreiber.Close();
            }
            return Geändert;
        }
    }
}
